package net.fltx.taskmgr.win32api;

import com.sun.jna.Native;
import com.sun.jna.win32.StdCallLibrary;

public interface User32 extends StdCallLibrary {
    static final User32 INSTANCE = Native.load("User32", User32.class);//加载系统User32 DLL文件，也可以是C++写的DLL文件

    int SendMessageA(int hwnd, int msg, int wparam, int lparam);

    int FindWindowA(String arg0, String arg1);

    void BlockInput(boolean isBlock);

    /**
     * 消息框
     * @param hWnd 从这个窗口句柄的窗口弹出消息框
     * @param lpText 消息框内容
     * @param lpCaption 消息框标题
     * @param uType 消息框类型
     * @return
     */
    int MessageBoxA(int hWnd, String lpText, String lpCaption, int uType);

    /**
     * 释放图标
     * @param hIcon 图标句柄
     * @return
     */
    boolean DestroyIcon(int hIcon);

    /**
     *  取得与图标有关的信息
     * @param hIcon 图标句柄
     * @param piconinfo 图标信息结构体
     * @return 成功时返回true
     * 函数返回时，由ICONINFO结构载入的位图必须由应用程序删去{@link Gdi32#DeleteObject(int)}
     */
    boolean GetIconInfo(int hIcon, IconInfo piconinfo);

    /**
     * 通过窗口句柄获取场景句柄
     * @param hwnd 窗口句柄
     * @return 场景句柄
     */
    int GetDC(int hwnd);

    /**
     * 释放由调用GetDC或GetWindowDC函数获取的指定设备场景。它对类或私有设备场景无效（但这样的调用不会造成损害）
     * @param hwnd 要释放的设备场景相关的窗口句柄
     * @param hdc 要释放的设备场景句柄
     * @return
     */
    boolean ReleaseDC (int hwnd, int hdc );

}
